A directory is a set of objects organized in a logical and hierarchical manner. An example of a directory is a telephone directory, which consists of a series of names, e.g. of persons or organizations, organized alphabetically, with each name having an address and phone number attached. A directory can be regarded as a tree of entries also known as directory information tree, or simply directory tree, due to the fact that data is represented in a hierarchical tree-like structure. The data in a directory can be managed by directory services.
Modifications and queries in a directory can be made using application protocols e.g. the Lightweight Directory Access Protocol (LDAP). One or more servers may contain the data making up the directory. In case of a distributed directory, regardless of which server a client connects to, it has the same view of the directory; a name presented to a server refers to the same entry it would refer to on another server.
There is an increasing interest in applications, especially in telecommunications networks, which could benefit from the capabilities offered by a central database, hosted e.g. on a server database. Towards this server database more than one client may need to be connected over a communication network. In this case for each client-server pair a dedicated connection is established.
A client can be any telecom node or computer or board or apparatus that communicates towards a server database through e.g. an LDAP based service. An LDAP Server database is any directory that offers the possibility to read/write data through an LDAP based service.
A client node hosting several clients uses a pool of hardware boards over which the LDAP connections are established towards the remote LDAP server databases. The hardware boards are shared among the clients using them and thus one hardware board can host connections between multiple clients and servers and multiple connections between a single client-server pair.
Once a connection is established over a hardware board it remains on that board until an order of disconnection is given or until an event occurs that breaks the connection. So, for example, one or more established connections over a hardware board are usually not moved from that board, unless a hardware or network failure occurs. That might lead to an inefficient use of the hardware resources.
If a new hardware board is introduced into the pool of existing hardware boards then this new board will only be used to host new connections towards the server database. Within the pool there may be overloaded, hardware boards. Also, if more than one board suddenly becomes unavailable then the connections hosted by them can be transferred to other boards within the pool. Nevertheless once the boards which became unavailable are available again then they will not be used to host existing connections again but they will only be used for new connections. In general there is the risk that a high number of connections are established over a few boards while having other boards available but unused. This can create problems of congestion or connections being dropped due to overload or unavailability of hardware boards. The problem can become even bigger in case the boards used in the pool have different capacities and/or performance. Using lower capacity boards while leaving higher capacity ones unused is an inefficient usage of resources.